home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 2 / Atari Mega Archive CD - Volume 2.iso / minix / up1510b.tgz / up1510b / src / test / test6.c < prev    next >
C/C++ Source or Header  |  1990-07-23  |  2KB  |  91 lines

  1. /* test 6 */
  2.  
  3. #define MAX_ERROR 4
  4.  
  5. extern char *brk(), *sbrk();
  6. extern int errno;
  7.  
  8. int errct;
  9. int subtest = 1;
  10.  
  11. main()
  12. {
  13.   int i;
  14.  
  15.   printf("Test  6 ");
  16.   for (i = 0; i < 70; i++) {
  17.     test60();
  18.   }
  19.   if (errct == 0)
  20.     printf("ok\n");
  21.   else
  22.     printf(" %d errors\n", errct);
  23.   exit(0);
  24. }
  25.  
  26.  
  27.  
  28. test60()
  29. {
  30. /* Test sbrk() and brk(). */
  31.  
  32.   char *addr, *addr2, *addr3;
  33.   int i, del, click, click2;
  34.  
  35.   addr = sbrk(0);
  36.   addr = sbrk(0);        /* force break to a click boundary */
  37.   for (i = 0; i < 10; i++) sbrk(7 * i);
  38.   for (i = 0; i < 10; i++) sbrk(-7 * i);
  39.   if (sbrk(0) != addr) e(1);
  40.   sbrk(30);
  41.   if (brk(addr) != 0) e(2);
  42.   if (sbrk(0) != addr) e(3);
  43.  
  44.   del = 0;
  45.   do {
  46.     del++;
  47.     brk(addr + del);
  48.     addr2 = sbrk(0);
  49.   } while (addr2 == addr);
  50.   click = addr2 - addr;
  51.   sbrk(-1);
  52.   if (sbrk(0) != addr) e(4);
  53.   brk(addr);
  54.   if (sbrk(0) != addr) e(5);
  55.  
  56.   del = 0;
  57.   do {
  58.     del++;
  59.     brk(addr - del);
  60.     addr3 = sbrk(0);
  61.   } while (addr3 == addr);
  62.   click2 = addr - addr3;
  63.   sbrk(1);
  64.   if (sbrk(0) != addr) e(6);
  65.   brk(addr);
  66.   if (sbrk(0) != addr) e(8);
  67.   if (click != click2) e(9);
  68.  
  69.   brk(addr + 2 * click);
  70.   if (sbrk(0) != addr + 2 * click) e(10);
  71.   sbrk(3 * click);
  72.   if (sbrk(0) != addr + 5 * click) e(11);
  73.   sbrk(-5 * click);
  74.   if (sbrk(0) != addr) e(12);
  75. }
  76.  
  77.  
  78. e(n)
  79. int n;
  80. {
  81.   int err_num = errno;        /* save errno in case printf clobbers it */
  82.  
  83.   printf("Subtest %d,  error %d  errno=%d  ", subtest, n, errno);
  84.   errno = err_num;        /* restore errno, just in case */
  85.   perror("");
  86.   if (errct++ > MAX_ERROR) {
  87.     printf("Too many errors; test aborted\n");
  88.     exit(1);
  89.   }
  90. }
  91.